import request from "@/utils/request";

/**
 * 获取歌单详情
 * @param {number} id 歌单ID
 */
export function getPlaylistDetail(id) {
  return request({
    url: "/playlist/detail",
    method: "get",
    params: {
      id,
    },
    isMusicApi: true,
  });
}

/**
 * 获取歌曲详情（可批量）
 * @param {string} ids 歌曲ID, 多个用逗号隔开
 */
export function getSongDetail(ids) {
  return request({
    url: "/song/detail",
    method: "get",
    params: { ids },
    isMusicApi: true,
  });
}

/**
 * 获取歌曲播放地址
 * @param {number} id 歌曲ID
 */
export function getSongUrl(id) {
  return request({
    url: "/song/url",
    method: "get",
    params: {
      id,
    },
    isMusicApi: true,
  });
}

/**
 * 获取歌词
 * @param {number} id 歌曲ID
 */
export function getLyricApi(id) {
  return request({
    url: "/lyric",
    method: "get",
    params: {
      id,
    },
    isMusicApi: true,
  });
}

/**
 * 搜索音乐
 * @param {Object} params
 * @param {string} params.keywords 关键词
 * @param {number} [params.limit=30] 返回数量
 * @param {number} [params.offset=0] 偏移量
 * @param {number} [params.type=1] 搜索类型
 */
export function searchApi(params) {
  return request({
    url: "/cloudsearch",
    method: "get",
    params,
    isMusicApi: true,
  });
}

/**
 * 获取默认搜索关键词
 */
export function getDefaultSearchKeywordApi() {
  return request({
    url: "/search/default",
    method: "get",
    isMusicApi: true,
  });
}

/**
 * 获取所有排行榜
 */
export function getToplistsApi() {
  return request({
    url: "/toplist",
    method: "get",
    isMusicApi: true,
  });
}

/**
 * 获取歌手热门50首歌曲
 * @param {number} id 歌手id
 */
export function getArtistHotSongsApi(id) {
  return request({
    url: "/artist/top/song",
    method: "get",
    params: { id },
    isMusicApi: true,
  });
}

/**
 * 检查音乐是否可用
 * @param {number} id 歌曲id
 */
export function checkMusicApi(id) {
  return request({
    url: "/check/music",
    method: "get",
    params: { id },
    isMusicApi: true,
  });
}

/**
 * 获取推荐歌单
 * @param {number} limit 获取数量
 */
export function getPersonalizedPlaylist(limit = 30) {
  return request({
    url: "/personalized",
    method: "get",
    params: { limit },
    isMusicApi: true,
  });
}

/**
 * 获取推荐新音乐
 * @param {number} limit 获取数量
 */
export function getPersonalizedNewSong(limit = 10) {
  return request({
    url: "/personalized/newsong",
    method: "get",
    params: { limit },
    isMusicApi: true,
  });
}
